package cn.share.life.module.other.excel;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class TestMain {

    public static void main(String[] args) {
        inputAndUpdateValue();
    }

    /**
     * 将参数写入到excel， 重新触发excel公式计算
     */
    public static  void inputAndUpdateValue() {
        try (FileInputStream fis = new FileInputStream(new File("D:\\work\\kua-qu-er-qi\\初始备案电价测算-0605-2.xlsx"));
             Workbook workbook = new XSSFWorkbook(fis);
             FileOutputStream fos = new FileOutputStream("D:\\work\\kua-qu-er-qi\\初始备案电价测算-0605-2.xlsx")) {
            Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表
            Row row = sheet.getRow(4); // 行索引从0开始，获取第一行，如果不存在则创建它
            if (row == null) {
                row = sheet.createRow(4); // 创建第一行
            }
            Cell cell = row.getCell(5); // 列索引从0开始， 获取第一行的第一个单元格，如果不存在则创建它
            if (cell == null) {
                cell = row.createCell(5); // 创建单元格
            }
//            double numericCellValue = cell.getNumericCellValue();
//            System.out.println("旧的值：" + numericCellValue);
            cell.setCellValue(1680000); // 设置单元格的值
            cell.setCellType(CellType.NUMERIC);
            workbook.getCreationHelper().createFormulaEvaluator().evaluateAll(); // 重新计算所有公式

            Row row39 = sheet.getRow(39); //
            Cell cell36 = row39.getCell(39); //累计净现金流量现值
            System.out.println("累计净现金流量现值,单元格公式: " + cell36);
            double numericCellValue = cell36.getNumericCellValue();
            System.out.println("累计净现金流量现值: " + numericCellValue);


            workbook.write(fos); // 写入修改后的内容到文件
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 从excel中获取计算结果
     */
    public static void getValue() {

    }
}
